import {getTenantList} from '@/api/system/tenant'
// 新增用户的form 配置
import addTenantConfig from './config';

export default {
  name: 'systemTenant',
  components: {},
  data() {
    return {
      //租户数据
      tenantData: [],
      // table的配置
      tenantOption: {
        isPagination: true,
        paginationTotal: 0,
        paginationCurrent: 1,
        paginationSize: 20,
        isSelection: true,
        selectionKey: 'id', // 唯一值
        tenantDeleteOption: {
          type: 'text'
        },
        tenantEditOption: {
          type: 'text'
        },
        column: [
          {
            label: 'Id',
            prop: 'id',
          },
          {
            label: '名称',
            prop: 'title',
          },
          {
            label: '开始时间',
            prop: 'start_time'
          },
          {
            label: '结束时间',
            prop: 'end_time'
          },
          {
            label: '租户状态',
            prop: 'status',
            slotName: 'tenantStatus',
          }
        ]
      },
      delTenantList: [],//需要删除的列表
      dialogAddTenant: false, // 新增租户弹窗
      addTenantFormData: {}, // 新增租户的表单字段
      addTenantOption: addTenantConfig.addTenantOption,
      defaultCheckedMenuKeys: [],// 编辑状态下默认选中的菜单列表
      tenantLoading: false, // 拉取菜单列表loading
    }
  },
  watch: {
    /** 监听编辑以及新增弹窗的变化*/
    dialogAddTenant(val) {
      if (val) { // 如果弹窗显示，请求tenant
        this.fetchMenuList();
      } else {
        this.defaultCheckedMenuKeys = [];
      }
    },

  },
  computed: {},
  mounted() {
    this.fetchMenuList();
  },
  filters: {},
  methods: {
    /** 拉取菜单列表*/
    fetchMenuList() {
      this.tenantLoading = true;
      getTenantList().then(res => {
        if (res.code === 20000) {
          this.tenantData = res.data;
          this.tenantOption.isPagination = this.tenantData.length > this.tenantOption.paginationSize;
        }
        this.tenantLoading = false;
      }).catch(() => {
        this.tenantLoading = false;
      })
    },
    /** 多选*/
    selectionChange(ev) {
      console.log('多选返回的结果：', ev)
      this.delTenantList = ev;
    },
    /** 点击新增新用户*/
    addNewTenant() {
      this.addTenantFormData = {}; // 初始化新增的表单数据
      this.dialogAddTenant = true;
    },
    /** 点击删除*/
    handleDelete(ev) {
      console.log('点击删除', ev);
      this.$confirm('确定要删除吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        this.isCan();
      }).catch(() => {
      });
    },
    /** 点击编辑*/
    handleEdit(ev) {
      console.log('点击编辑', ev);
      if (ev.row.tenantPower) {
        this.defaultCheckedMenuKeys = ev.row.tenantPower || [];
      }
      this.addTenantFormData = ev.row; // 赋值当前需要更新的数据
      this.dialogAddTenant = true; //显示编辑的弹窗
    },
    /** 演示环境不能操作次动作*/
    isCan() {
      this.$message.error('演示环境不能操作次动作');
    },
    /** 新增弹窗操作以下*/
    /** 点击取消*/
    handleDialogAddUserClose() {
      this.dialogAddTenant = false;
    },
    /** 点击保存*/
    handleAddNewTenant(ev) {
      console.log('点击保存:', ev);
      if (ev.status === 1) {
        let data = ev.data;
        /** 以下方法为静态的方法，如需上线，应该联调接口*/
        //如果有id，则为编辑的状态
        if (data.id) {
          let isIndex = this.tenantData.findIndex(ui => ui.id === data.id);
          if (isIndex >= 0) { // 存在
            this.tenantData[isIndex] = data;
            this.$message.success('编辑成功');
          }
        } else {
          let time = new Date();
          ev.data['createTime'] = `${time.getFullYear()}-${time.getMonth() + 1}-${time.getDate()}`;
          ev.data['id'] = this.tenantData[this.tenantData.length - 1]['id'] + 1;
          this.tenantData.push(data);
          this.$message.success('新增成功');
        }
        this.handleDialogAddUserClose();
      }
    },
  }
}
